// 保证点的数组是以顺时针保存 
// TODO 待验证
function pointInArea(pt, pts) {
	pts = pts.slice();
	pts.push(pts[0]); // 连接最后一边
	for ( var i = 1; i < pts.length; ++i) {
		var p0 = pts[i - 1];
		var p1 = pts[i];
		var dx = p1.x - p0.x;
		var dy = p1.y - p0.y;
		if (dx == 0) {
			if (dy > 0 && pt.x > p0.x) {
				return false;
			}
			if (dy < 0 && pt.x < p0.x) {
				return false;
			}
		}
		var y = dy / dx * (pt.x - p0.x) + p0.y;
		if (dx > 0 && pt.y < y) {
			return false;
		}
		if (dx < 0 && pt.y > y) {
			return false;
		}
	}
	return true;
}

/**
 * 元素全匹配
 */
var arrayContains = function(arr, destArr) {
	// TODO 判断arr destArr是否为空
	// TODO 判断是否是Array
	for(var i = 0; i < destArr.length; i++) {
		var contains = false;
		for(var j = 0; j < arr.length; j++) {
			if(destArr[i] == arr[j]) {
				contains = true;
				break;
			}
		}
		if(!contains) {
			return false;
		}
	}
	return true;
};

var arrayEquals = function(arr, destArr) {
	// TODO 判断arr destArr是否为空
	// TODO 判断是否是Array
	if((arr == null || arr.length == 0) && (destArr == null || destArr.length == 0)) {
		return true;
	} else if((arr == null || arr.length == 0) && destArr.length > 0) {
		return false;
	} else if(arr.length > 0 && (destArr == null || destArr.length == 0)) {
		return false;
	}
	
	if(arr.length != destArr.length) {
		return false;
	}
	return arrayContains(arr, destArr);
};


